package br.com.site;

import java.util.ArrayList;
import java.util.List;

import model.Equipe;
import model.Estrutura;
import model.PDI;
import model.Perigo;
import model.Vitima;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.Spinner;
import android.widget.TableLayout;
import android.widget.TableRow;
import android.widget.TextView;

import com.google.android.maps.GeoPoint;

public class NovoEstrutura extends Activity{
	
	private boolean outroTipo;
	
	private List<Equipe> listaEquipes;
	private List<Perigo> listaPerigos; 
	private List<Vitima> listaVitimas; 
	
	private TableLayout tlEstDelete;
	private TableRow trEstruturaTipo;
	
	private EditText etEstNome, etEstTipo, etEstAfluencia, etEstMaterial, etNumAndares, etNumSubterraneos, etTipoSubterraneo, etTempoEstimadoAcesso, etResistenciaPiso, etQtdPessoasPiso;
	private Spinner spEstTipo, spEstEstabilidade, spEstTamanhoAcesso, spEstDifAcesso, spEstEvolucao, spEstRevisao, spEstEquipe, spEstPerigo, spEstVitima;
	
	private ImageButton salvar;
	private TextView tvTit;
	
	ArrayAdapter<CharSequence> adtEstTipo, adtRevisao, adtEstabilidade, adtTmnAcesso, adtDifAcesso, adtEvolucao, adtEstEquipe, adtEstPerigo, adtEstVitima;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		
		setContentView(R.layout.novo_estrutura);
		
		carregaViews();
		
        outroTipo = false;
        
        setPDIArrayAdapter(adtEstEquipe, spEstEquipe, listaEquipes);
        setPDIArrayAdapter(adtEstPerigo, spEstPerigo, listaPerigos);
        setPDIArrayAdapter(adtEstVitima, spEstVitima, listaVitimas);
        
        spEstTipo.setOnItemSelectedListener(new OnItemSelectedListener() {
			@Override
			public void onItemSelected(AdapterView<?> arg0, View arg1,
					int arg2, long arg3) {
				if (arg0.getSelectedItem().toString().equals("Outro...")){
					trEstruturaTipo.setVisibility(View.VISIBLE);
					outroTipo = true;
				}else{
					trEstruturaTipo.setVisibility(View.GONE);
					outroTipo = false;
				}
				
			}

			@Override
			public void onNothingSelected(AdapterView<?> arg0) {
				
			}
			
		});
        
        if(!Global.editarPDI) novoPDI();
        else editarPDI();
	}

	private void carregaViews(){
		listaEquipes = br.com.site.MainActivity.listaEquipes;
		listaPerigos = br.com.site.MainActivity.listaPerigos;
		listaVitimas = br.com.site.MainActivity.listaVitimas;
		
		tlEstDelete = (TableLayout) findViewById(R.novo_estrutura.tlEstDelete);
		tlEstDelete.setVisibility(View.GONE);
		
		etEstNome = (EditText) findViewById(R.novo_estrutura.etEstNome);
    	etEstTipo = (EditText) findViewById(R.novo_estrutura.etEstruturaTipoDeEstrutura);
		spEstTipo = (Spinner) findViewById(R.novo_estrutura.spEstTipo);
    	etEstAfluencia = (EditText) findViewById(R.novo_estrutura.etEstAfluencia);
    	etEstMaterial = (EditText) findViewById(R.novo_estrutura.etEstMaterial);
    	etNumAndares = (EditText) findViewById(R.novo_estrutura.etNumAndares);
    	etTipoSubterraneo = (EditText) findViewById(R.novo_estrutura.etTipoSubterraneo);
    	etNumSubterraneos = (EditText) findViewById(R.novo_estrutura.etNumSubterraneos);
    	etTempoEstimadoAcesso = (EditText) findViewById(R.novo_estrutura.etTempoEstimadoAcesso);
    	etResistenciaPiso = (EditText) findViewById(R.novo_estrutura.etResistenciaPiso);
    	etQtdPessoasPiso = (EditText) findViewById(R.novo_estrutura.etQtdPessoasPiso);
    	
		spEstEstabilidade = (Spinner) findViewById(R.novo_estrutura.spEstEstabilidade);
		spEstTamanhoAcesso = (Spinner) findViewById(R.novo_estrutura.spEstTamanhoAcesso);
		spEstDifAcesso = (Spinner) findViewById(R.novo_estrutura.spEstDificuldadeAcesso);
		spEstEvolucao = (Spinner) findViewById(R.novo_estrutura.spEstEvolucao);
		spEstRevisao = (Spinner) findViewById(R.novo_estrutura.spEstRevisao);
    	
		spEstEquipe = (Spinner) findViewById(R.novo_estrutura.spEstEquipe);
		spEstPerigo = (Spinner) findViewById(R.novo_estrutura.spEstPerigo);
		spEstVitima = (Spinner) findViewById(R.novo_estrutura.spEstVitima);
		
		salvar = (ImageButton) findViewById(R.novo_estrutura.estSalvar);
        tvTit = (TextView) findViewById(R.novo_estrutura.tvEstruturaTit);
        
        trEstruturaTipo = (TableRow) findViewById(R.novo_estrutura.trEstruturaTipo);
        
        
        adtEstTipo = ArrayAdapter.createFromResource(this, R.array.estruturaTipo_array, R.layout.textviewmodelo);
		adtEstTipo.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spEstTipo.setAdapter(adtEstTipo);
		
		adtRevisao = ArrayAdapter.createFromResource(
        		this, R.array.estruturaRevisao_array, R.layout.textviewmodelo);
        adtRevisao.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spEstRevisao.setAdapter(adtRevisao);
        
        adtEstabilidade = ArrayAdapter.createFromResource(this,
        		R.array.estruturaEstabilidade_array, R.layout.textviewmodelo);
        adtEstabilidade.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spEstEstabilidade.setAdapter(adtEstabilidade);
        
        adtTmnAcesso = ArrayAdapter.createFromResource(
        		this, R.array.estruturaTamanhoAcesso_array, R.layout.textviewmodelo);
        adtTmnAcesso.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spEstTamanhoAcesso.setAdapter(adtTmnAcesso);
        
        adtDifAcesso = ArrayAdapter.createFromResource(
        		this, R.array.estruturaDificuldadeAcesso_array, R.layout.textviewmodelo);
        adtDifAcesso.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spEstDifAcesso.setAdapter(adtDifAcesso);
        
        adtEvolucao = ArrayAdapter.createFromResource(
        		this, R.array.estruturaEvolucao_array, R.layout.textviewmodelo);
        adtEvolucao.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spEstEvolucao.setAdapter(adtEvolucao);
        
        adtEstEquipe = new ArrayAdapter<CharSequence>(this,
        		R.layout.textviewmodelo);
        adtEstEquipe.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        
        adtEstPerigo = new ArrayAdapter<CharSequence>(this, R.layout.textviewmodelo);
        adtEstPerigo.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        
        adtEstVitima = new ArrayAdapter<CharSequence>(this, R.layout.textviewmodelo);
        adtEstVitima.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
	}

	/**
	 * Este método aplicará a um spinner um ArrayAdapter populado pelos toStrings de cada PDI contido numa lista de PDIs
	 * @param aAdapter ArrayAdapter que será aplicado no Spinner
	 * @param sp Spinner que receberá os toStrings dos PDIs
	 * @param l Lista de PDIs a serem adicionados ao ArrayAdapter
	 */
	private void setPDIArrayAdapter(ArrayAdapter<CharSequence> aAdapter, Spinner sp, List<?> l){
		aAdapter = new ArrayAdapter<CharSequence>(this, R.layout.textviewmodelo);
		aAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        
		sp.setAdapter(aAdapter);
        if(l.size() < 1){
        	aAdapter.add("Desconhecido");
        }else{
        	aAdapter.add("Desconhecido");
	        for (int j = 0; j < l.size(); j++) {
	        	aAdapter.add(l.get(j).toString());
			}
    	}
	}
	
	private void novoPDI(){
		salvar.setOnClickListener(new OnClickListener() {  
    		public void onClick(View v) {  
    			salvar.setImageResource(R.drawable.bt_aplicar);
    			GeoPoint temp = new GeoPoint(0, 0);
        	
        	
            	int estadoDaBusca;
            	if (spEstRevisao.getSelectedItem().equals("Não revisado")){
            		estadoDaBusca = 1;
            	} else if (spEstRevisao.getSelectedItem().equals("Em revisão")){
            		estadoDaBusca = 2;
            	} else if (spEstRevisao.getSelectedItem().equals("Revisado")){
            		estadoDaBusca = 3;
            	}else{
            		estadoDaBusca = 0;
            	}
            	
            	int estabilidade;
            	if (spEstEstabilidade.getSelectedItem().equals("Estável")){
            		estabilidade = 1;
            	} else if (spEstEstabilidade.getSelectedItem().equals("Instável")){
            		estabilidade = 2;
            	} else if (spEstEstabilidade.getSelectedItem().equals("Completamente Instável")){
            		estabilidade = 3;
            	}else{
            		estabilidade = 0;
            	}
            	
            	String tamanhoAcesso;
            	if (spEstTamanhoAcesso.getSelectedItem().equals("Grande")){
            		tamanhoAcesso = "Grande";
            	}else if (spEstTamanhoAcesso.getSelectedItem().equals("Pequeno")){
            		tamanhoAcesso = "Pequeno";
            	}else{
            		tamanhoAcesso = "Desconhecido";
            	}
            	
            	int difEntrada;
            	if (spEstDifAcesso.getSelectedItem().equals("Leve")){
            		difEntrada = 1;
            	} else if (spEstDifAcesso.getSelectedItem().equals("Média")){
            		difEntrada = 2;
            	} else if (spEstDifAcesso.getSelectedItem().equals("Difícil")){
            		difEntrada = 3;
            	} else if(spEstDifAcesso.getSelectedItem().equals("Muito Difícil")){
            		difEntrada = 4;
            	}else{
            		difEntrada = 0;
            	}
            	
            	int evolTrab;
            	if (spEstEvolucao.getSelectedItem().equals("Não começou")){
            		evolTrab = 1;
            	} else if (spEstEvolucao.getSelectedItem().equals("Em andamento")){
            		evolTrab = 2;
            	} else if (spEstEvolucao.getSelectedItem().equals("Finalizado")){
            		evolTrab = 3;
            	} else if(spEstEvolucao.getSelectedItem().equals("Em pausa")){
            		evolTrab = 4;
            	}else{
            		evolTrab = 0;
            	}
            	
            	String tituloBalao = etEstNome.getText().toString();
            	
            	String textoBalao = "";
            	if (etEstMaterial.getText().toString().equals("")){
            		textoBalao += spEstRevisao.getSelectedItem() + "\n" + spEstEstabilidade.getSelectedItem();
            	}else{
            		textoBalao += etEstMaterial.getText().toString() + ", " + spEstRevisao.getSelectedItem() + "\n" + spEstEstabilidade.getSelectedItem();
            	}
            	
            	String tipoDeEstrutura = "Desconhecido";
            	if(!spEstTipo.getSelectedItem().equals("Desconhecido") && !outroTipo){
            		tipoDeEstrutura = spEstTipo.getSelectedItem().toString();
            	}
            	
            	if(outroTipo){
            		tipoDeEstrutura = etEstTipo.getText().toString();
				}
            	
            	String tipoDeMaterial = etEstMaterial.getText().toString();
            	if (tipoDeMaterial.equals("")) tipoDeMaterial = "Desconhecido";
            	
            	String tipoDeSubsolo = etTipoSubterraneo.getText().toString();
            	if (tipoDeSubsolo.equals("")) tipoDeSubsolo = "Desconhecido";
            	
            	int afluenciaPublico = 0;
            	try{
            		afluenciaPublico = Integer.parseInt(etEstAfluencia.getText().toString());
            	}catch(NumberFormatException nfe){
            		afluenciaPublico = -1;
            	}
            	
            	int numAndares = 0;
            	try{
            		numAndares = Integer.parseInt(etNumAndares.getText().toString());
				}catch(NumberFormatException nfe){
					numAndares = -1;
				}
            	
            	int numSubsolos = 0;
            	try{
            		numSubsolos = Integer.parseInt(etNumSubterraneos.getText().toString());
				}catch(NumberFormatException nfe){
					numSubsolos = -1;
				}
            	
            	int qtdPessoasPiso;
            	try{
					qtdPessoasPiso = Integer.parseInt(etQtdPessoasPiso.getText().toString());
				}catch(NumberFormatException nfe){
					qtdPessoasPiso = -1;
				}
            	
            	int resistenciaPiso = 0;
            	try{
					resistenciaPiso = Integer.parseInt(etResistenciaPiso.getText().toString());
				}catch(NumberFormatException nfe){
					resistenciaPiso = -1;
				}
            	
            	int tempoAcesso;
            	try{
					tempoAcesso = Integer.parseInt(etTempoEstimadoAcesso.getText().toString());
				}catch(NumberFormatException nfe){
					tempoAcesso = -1;
				}
            	
            	
            	Equipe eqp = null;
				for (Equipe e : listaEquipes) {
					if (spEstEquipe.getSelectedItem().equals(e.toString())){
						eqp = e;
					}else{
						continue;
					}
				}
				
				Perigo per = null;
				for (Perigo p : listaPerigos) {
					if (spEstPerigo.getSelectedItem().equals(p.toString())){
						per = p;
					}else{
						continue;
					}
				}
				
				Vitima vit = null;
				for (Vitima vic : listaVitimas) {
					if (spEstVitima.getSelectedItem().equals(vic.toString())){
						vit = vic;
					}else{
						continue;
					}
				}
            	
				if (eqp != null) textoBalao += "\nEquipe: " + eqp.toString();
				if (per != null) textoBalao += "\nPerigo: " + per.toString();
				if (vit != null) textoBalao += "\nVítima: " + vit.toString();
				
            	Estrutura est = new Estrutura(temp, tituloBalao, textoBalao,
            			eqp, per, vit, tituloBalao, tipoDeEstrutura, afluenciaPublico, estadoDaBusca, estabilidade,
            			tipoDeMaterial, tamanhoAcesso, difEntrada, numAndares, numSubsolos, tipoDeSubsolo, evolTrab, qtdPessoasPiso, resistenciaPiso, tempoAcesso);
            	
            	if(eqp != null) eqp.setEstrutura(est);
            	if(vit != null) vit.setEstrutura(est);
				
				br.com.site.MainActivity.objetoPassado = est;
				Global.novoPdi = true;
				finish();
				br.com.site.MainActivity.exibeToast(getApplicationContext(), "Toque na tela para posicionar a estrutura.");
    		}  
    	});
	}
	
	private void editarPDI(){
		salvar.setImageResource(R.drawable.bt_edit);
    	tvTit.setText("Editar Estrutura");
    	tlEstDelete.setVisibility(View.VISIBLE);
    	
    	final TextView tvDel = (TextView) findViewById(R.novo_estrutura.tvDelEst);
    	final ImageView ivDel = (ImageView) findViewById(R.novo_estrutura.ivDelEst);
    	
    	final Estrutura e = (Estrutura) Global.pdiEdicao;
    	
    	tvDel.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View view) {
				deletaObj(e);
			}
		});
    	
    	ivDel.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View view) {
				deletaObj(e);
			}
		});
	
    	
    	etEstNome.setText(e.getTituloBalao());
    	
    	setNumEditText(e.getAfluenciaPublico(), etEstAfluencia);
    	etEstMaterial.setText(e.getTipoDeMaterial());
    	etEstTipo.setText(e.getTipoDeEstrutura());
    	setNumEditText(e.getNumAndares(), etNumAndares);
    	setNumEditText(e.getQtdPessoasPiso(), etQtdPessoasPiso);
    	setNumEditText(e.getResistenciaPiso(), etResistenciaPiso);
    	etTipoSubterraneo.setText(e.getTipoDeSubsolo());
    	setNumEditText(e.getNumSubsolos(), etNumSubterraneos);
    	setNumEditText(e.getTempoAcesso(), etTempoEstimadoAcesso);
    	
    	setAdapterPositionFromString(spEstTipo,e.getTipoDeEstrutura());
    	setAdapterPositionFromString(spEstRevisao,e.getEstadoDaBusca());
    	setAdapterPositionFromString(spEstEstabilidade,e.getInstabilidade());
    	setAdapterPositionFromString(spEstTamanhoAcesso,e.getTamanhoDoAcesso());
    	setAdapterPositionFromString(spEstDifAcesso,e.getDificuldadeDeEntrada());
    	setAdapterPositionFromString(spEstEvolucao,e.getEvolucaoDoTrabalho());
    	
    	
    	try{
    		setAdapterPositionFromString(spEstEquipe,e.getEquipe().toString());
    	}catch (NullPointerException ex) {
    		setAdapterPositionFromString(spEstEquipe, "Desconhecido");
		}try{
    		setAdapterPositionFromString(spEstPerigo,e.getPerigo().toString());
    	}catch (NullPointerException ex) {
    		setAdapterPositionFromString(spEstPerigo, "Desconhecido");
		}try{
    		setAdapterPositionFromString(spEstVitima,e.getVitima().toString());
    	}catch (NullPointerException ex) {
    		setAdapterPositionFromString(spEstVitima, "Desconhecido");
		}
    	
    	
    	salvar.setOnClickListener(new OnClickListener() {  
    		public void onClick(View v) {  
    		MainActivity.listaEstruturas.remove(e);
    		
        	
        	int estadoDaBusca;
        	if (spEstRevisao.getSelectedItem().equals("Não revisado")){
        		estadoDaBusca = 1;
        	} else if (spEstRevisao.getSelectedItem().equals("Em revisão")){
        		estadoDaBusca = 2;
        	} else if (spEstRevisao.getSelectedItem().equals("Revisado")){
        		estadoDaBusca = 3;
        	}else{
        		estadoDaBusca = 0;
        	}
        	e.setEstadoDaRevisao(estadoDaBusca);
        	
        	int estabilidade;
        	if (spEstEstabilidade.getSelectedItem().equals("Estável")){
        		estabilidade = 1;
        	} else if (spEstEstabilidade.getSelectedItem().equals("Instável")){
        		estabilidade = 2;
        	} else if (spEstEstabilidade.getSelectedItem().equals("Completamente Instável")){
        		estabilidade = 3;
        	}else{
        		estabilidade = 0;
        	}
        	e.setInstabilidade(estabilidade);
        	
        	if (spEstTamanhoAcesso.getSelectedItem().equals("Grande")){
        		e.setTamanhoDoAcesso("Grande");
        	}else if (spEstTamanhoAcesso.getSelectedItem().equals("Pequeno")){
        		e.setTamanhoDoAcesso("Pequeno");
        	}else{
        		e.setTamanhoDoAcesso("Desconhecido");
        	}
        	
        	
        	int difEntrada;
        	if (spEstDifAcesso.getSelectedItem().equals("Leve")){
        		difEntrada = 1;
        	} else if (spEstDifAcesso.getSelectedItem().equals("Média")){
        		difEntrada = 2;
        	} else if (spEstDifAcesso.getSelectedItem().equals("Difícil")){
        		difEntrada = 3;
        	} else if(spEstDifAcesso.getSelectedItem().equals("Muito Difícil")){
        		difEntrada = 4;
        	}else{
        		difEntrada = 0;
        	}
        	e.setDificuldadeDeEntrada(difEntrada);
        	
        	int evolTrab;
        	if (spEstEvolucao.getSelectedItem().equals("Não começou")){
        		evolTrab = 1;
        	} else if (spEstEvolucao.getSelectedItem().equals("Em andamento")){
        		evolTrab = 2;
        	} else if (spEstEvolucao.getSelectedItem().equals("Finalizado")){
        		evolTrab = 3;
        	} else if(spEstEvolucao.getSelectedItem().equals("Em pausa")){
        		evolTrab = 4;
        	}else{
        		evolTrab = 0;
        	}
        	e.setEvolucaoDoTrabalho(evolTrab);
        	
        	String tituloBalao = etEstNome.getText().toString();
        	e.setTituloBalao(tituloBalao);
        	e.setIdentificacao(tituloBalao);
        	
        	String textoBalao = "";
        	if (etEstMaterial.getText().toString().equals("")){
        		textoBalao += spEstRevisao.getSelectedItem() + "\n" + spEstEstabilidade.getSelectedItem();
        	}else{
        		textoBalao += etEstMaterial.getText().toString() + ", " + spEstRevisao.getSelectedItem() + "\n" + spEstEstabilidade.getSelectedItem();
        	}
        	e.setTextoBalao(textoBalao);
        	
        	String tipoDeEstrutura = "Desconhecido";
        	if(!spEstTipo.getSelectedItem().equals("Desconhecido") && !outroTipo){
        		tipoDeEstrutura = spEstTipo.getSelectedItem().toString();
        	}
        	if(outroTipo){
        		tipoDeEstrutura = etEstTipo.getText().toString();
			}
        	
        	e.setTipoDeEstrutura(tipoDeEstrutura);
        	
        	e.setTipoDeMaterial(setStringEditText(etEstMaterial));
        	
        	e.setTipoDeSubsolo(setStringEditText(etTipoSubterraneo));
        	
        	int afluenciaPublico = 0;
        	try{
        		afluenciaPublico = Integer.parseInt(etEstAfluencia.getText().toString());
        	}catch(NumberFormatException nfe){
        		afluenciaPublico = -1;
        	}
        	e.setAfluenciaPublico(afluenciaPublico);
        	
        	int numAndares = 0;
        	try{
        		numAndares = Integer.parseInt(etNumAndares.getText().toString());
			}catch(NumberFormatException nfe){
				numAndares = -1;
			}
			e.setNumAndares(numAndares);
        	
        	int numSubsolos = 0;
        	try{
        		numSubsolos = Integer.parseInt(etNumSubterraneos.getText().toString());
			}catch(NumberFormatException nfe){
				numSubsolos = -1;
			}
			e.setNumSubsolos(numSubsolos);
        	
        	int qtdPessoasPiso;
        	try{
				qtdPessoasPiso = Integer.parseInt(etQtdPessoasPiso.getText().toString());
			}catch(NumberFormatException nfe){
				qtdPessoasPiso = -1;
			}
			e.setQtdPessoasPiso(qtdPessoasPiso);
        	
        	int resistenciaPiso = 0;
        	try{
				resistenciaPiso = Integer.parseInt(etResistenciaPiso.getText().toString());
			}catch(NumberFormatException nfe){
				resistenciaPiso = -1;
			}
			e.setResistenciaPiso(resistenciaPiso);
        	
        	int tempoAcesso;
        	try{
				tempoAcesso = Integer.parseInt(etTempoEstimadoAcesso.getText().toString());
			}catch(NumberFormatException nfe){
				tempoAcesso = -1;
			}
			e.setTempoAcesso(tempoAcesso);
        	
        	
        	Equipe eqp = null;
			for (Equipe e : listaEquipes) {
				if (spEstEquipe.getSelectedItem().equals(e.toString())){
					eqp = e;
				}else{
					continue;
				}
			}
			
			Perigo per = null;
			for (Perigo p : listaPerigos) {
				if (spEstPerigo.getSelectedItem().equals(p.toString())){
					per = p;
				}else{
					continue;
				}
			}
			
			Vitima vit = null;
			for (Vitima vic : listaVitimas) {
				if (spEstVitima.getSelectedItem().equals(vic.toString())){
					vit = vic;
				}else{
					continue;
				}
			}
        	
			if (eqp != null){
				e.setEquipe(eqp);
				textoBalao += "\nEquipe: " + eqp.toString();
			}
			if (per != null){
				e.setPerigo(per);
				textoBalao += "\nPerigo: " + per.toString();
			}
			if (vit != null){
				e.setVitima(vit);
				textoBalao += "\nVítima: " + vit.toString();
			}
			e.setTextoBalao(textoBalao);
			
			try{
				eqp.setEstrutura(e);
			}catch(NullPointerException exc){
				//TODO o que fazer se o user cadastra um equipamento e descadastra?
			}
			try{
				vit.setEstrutura(e);
			}catch(NullPointerException exc){
				//TODO o que fazer se o user cadastra um equipamento e descadastra?
			}
			
			atualizaObj(e);
        	finish();
			Global.editarPDI=false;
			MainActivity.exibeToast(getApplicationContext(), "Dados atualizados");
        }  
    	});
	}
	
	public void deletaObj(final Estrutura e){
		AlertDialog.Builder builder = new AlertDialog.Builder(this);
		builder.setTitle("Excluir Estrutura")
			   .setMessage("Tem certeza?")
		       .setCancelable(false)
		       .setPositiveButton("Sim", new DialogInterface.OnClickListener() {
		           public void onClick(DialogInterface dialog, int id) {
		        	   ArrayList<PDI> links = Global.getArrayDeLinks(e);
		        	   if(!links.equals(null) && links.size()>0){
		        		   for (PDI pdi : links) {
		        			   if(pdi instanceof Equipe){
		        				   Equipe es = (Equipe) pdi;
		        				   es.setEstrutura(null);
		        				   es.atualizaTextoBalao();
		        				   NovoEquipe.atualizaObj(es);
		        			   }
		        			   if(pdi instanceof Vitima){
		        				   Vitima vi = (Vitima) pdi;
		        				   vi.setEstrutura(null);
		        				   vi.atualizaTextoBalao();
		        				   NovoVitima.atualizaObj(vi);
		        			   }
		        		   }
		        	   }
		        	   
		        	   MainActivity.estruturaOverlays.clear();
		        	   
		        	   MainActivity.listaEstruturas.remove(e);
		        	   for (Estrutura est : MainActivity.listaEstruturas) {
		        		   MainActivity.estruturaOverlays.addOverlay(est.getOverlayItem(), est);
		        	   }
		        	   MainActivity.estruturaOverlays.hideBalloon();
		        	   finish();
		        	   Global.editarPDI=false;
		           }
		       })
		       .setNegativeButton("Não", new DialogInterface.OnClickListener() {
		           public void onClick(DialogInterface dialog, int id) {
		                dialog.cancel();
		           }
		       });
		builder.show();
	}
	
	public void setAdapterPositionFromString(Spinner spinner, String texto){
		@SuppressWarnings({ "unchecked", "rawtypes" })
		ArrayAdapter<CharSequence> adapter = (ArrayAdapter) spinner.getAdapter();
		try{
			int pos = adapter.getPosition(texto);
			spinner.setSelection(pos);
		}catch(NullPointerException exc){
			spinner.setSelection(0);
		}
	}
	
	public static void atualizaObj(Estrutura e){
		MainActivity.estruturaOverlays.clear();
		for (Estrutura est : MainActivity.listaEstruturas) {
			if(!est.equals(e)){
				MainActivity.estruturaOverlays.addOverlay(est.getOverlayItem(), est);
			}
		}
		MainActivity.estruturaOverlays.addOverlay(e.getOverlayItem(), e);
		MainActivity.listaEstruturas.add(e);
		MainActivity.estruturaOverlays.hideBalloon();
		
	}
	
	public void setNumEditText(int propriedade, EditText et){
		String s = "";
    	if(propriedade >= 0) s = String.valueOf(propriedade);
    	et.setText(s);
	}
	
	public String setStringEditText(EditText et){
		if (et.getText().toString().equals("")){
			return "Desconhecido";
		}
		return et.getText().toString();
	}
	
	@Override
	public void onBackPressed() {
		Global.editarPDI=false;
		super.onBackPressed();
	}
}
